///**
// * AUTO_COPYRIGHT_SUB_TAG
// */
//package com.rim.samples.device.push.ui;
//
//import net.rim.device.api.i18n.DateFormat;
//import net.rim.device.api.i18n.SimpleDateFormat;
//import net.rim.device.api.ui.Font;
//import net.rim.device.api.ui.Graphics;
//import net.rim.device.api.ui.MenuItem;
//import net.rim.device.api.ui.component.ListField;
//import net.rim.device.api.ui.component.ListFieldCallback;
//import net.rim.device.api.ui.container.MainScreen;
//import net.rim.device.api.ui.container.VerticalFieldManager;
//
//import com.rim.samples.device.push.PushController;
//import com.rim.samples.device.push.PushMessage;
//
//public class MessageHistoryScreen extends MainScreen implements ListFieldCallback {
//
//    private VerticalFieldManager vfm;
//    private Font fnt;
//    private Font unreadFnt;
//    private DateFormat dateFormat;
//    private ListField listField;
//
//    private String[] ids;
//    private String[] items;
//    private boolean[] unread;
//
//    public MessageHistoryScreen() {
//        setTitle( "Message history" );
//
//        dateFormat = new SimpleDateFormat("MMM dd, hh:mm:ss");
//
//        vfm = new VerticalFieldManager();
//        fnt = this.getFont();
//        unreadFnt = fnt.derive( Font.BOLD );
//        
//        addMenuItem( new ViewMessageMenuItem() );
//        addMenuItem( new ClearHistoryMenuItem() );
//        
//        add( vfm );
//
//        listField = new ListField();
//        listField.setCallback( this );
//        vfm.add( listField );
//    }
//
//    public void populate( PushMessage[] messages, String currentId ) {
//        int length = messages.length;
//        ids = new String[ length ];
//        items = new String[ length ];
//        unread = new boolean[ length ];
//
//        int selected = -1;
//
//        for( int i = 0; i < length; i++ ) {
//            // start from the last element in the array
//            // it was the last element received and we want to display at the top of the list
//            PushMessage pushMessage = messages[ length - i - 1 ];
//            String text;
//            if( pushMessage.isTextMesasge() ) {
//                try {
//                    text = new String( pushMessage.getData(), "UTF-8" );
//                } catch( Exception ex ) {
//                    text = new String( pushMessage.getData() );
//                }
//                
//                if( text.length() > 50 ) {
//                    text = text.substring( 0, 50 ) + "...";
//                }
//            } else {
//                text = "[Image]";
//            }
//
//            ids[ i ] = pushMessage.getId();
//            items[ i ] = dateFormat.formatLocal( pushMessage.getTimestamp() ) + ": " + text;
//            unread[ i ] = pushMessage.isUnread();
//
//            if( ids[ i ].equals( currentId ) ) {
//                selected = i;
//            }
//        }
//
//        listField.setSize( length );
//        if( selected != -1 ) {
//            listField.setSelectedIndex( selected );
//        }
//    }
//
//    private class ViewMessageMenuItem extends MenuItem {
//
//        public ViewMessageMenuItem() {
//            super( "View Message", 0, 1 );
//        }
//
//        public void run() {
//            int selectedIndex = listField.getSelectedIndex();
//            String msgId = ids[selectedIndex];
//            PushController.showMessage( msgId );
//        }
//    }
//    
//    private static class ClearHistoryMenuItem extends MenuItem {
//        
//        public ClearHistoryMenuItem() {
//            super( "Clear History", 0x00010000 + 1, 1 );
//        }
//        
//        public void run() {
//            PushController.clearMessageHistory();
//        }
//    }
//
//    // ******************* ListFieldCallback *************************
//
//    public void drawListRow( ListField listField, Graphics graphics, int index, int y, int width ) {
//        if( unread[ index ] ) {
//            graphics.setFont( unreadFnt );
//        } else {
//            graphics.setFont( fnt );
//        }
//        graphics.drawText( items[ index ], 0, y );
//    }
//
//    public Object get( ListField listField, int index ) {
//        return null;
//    }
//
//    public int getPreferredWidth( ListField listField ) {
//        return 0;
//    }
//
//    public int indexOfList( ListField listField, String prefix, int start ) {
//        return 0;
//    }
//}
